home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 23
/
AACD 23.iso
/
AACD
/
Games
/
dynAMIte
/
Developer
/
C
/
dynamite.h
< prev
next >
Wrap
C/C++ Source or Header
|
2001-06-24
|
7KB
|
201 lines
#ifndef DYNAMITE_H
#define DYNAMITE_H
/*
** $VER: dynamite.h 40.0 (3.6.2001)
**
*/
#ifndef EXEC_NODES_H
#include <exec/nodes.h>
#endif /* EXEC_NODES_H */
#ifndef EXEC_LISTS_H
#include <exec/lists.h>
#endif /* EXEC_LISTS_H */
#ifndef EXEC_SEMAPHORES_H
#include <exec/semaphores.h>
#endif /* EXEC_SEMAPHORES_H */
/* player->status */
#define PA_NONE 0 /* no player */
#define PA_VISI 1 /* visitor */
#define PA_LOGGEDIN 2 /* just logged in/after a game */
#define PA_PLAYING 3 /* is in game (no matter if he's dead) */
#define PA_COUNTDOWN 4 /* this is of no use. players only have this status if they logged in. */
#define PA_DEAD 5 /* this is of no use, it's not meant to see if a player is */
/* actually dead. use player.dead instead. it's only set */
/* after a successfull login for the other players */
#define PA_WON 6 /* a player has this status if he won the last round */
/* dynasema->gamerunning */
#define GAME_CLOSEGAME 0, /* transitional state to GAME_MENU after connection got closed */
#define GAME_MENU 1 /* game is in menu eg: login screen */
#define GAME_ENDGAME 2 /* transitional state to GAME_MENU after effect has been drawn */
#define GAME_EFFECT 3 /* game draws effect after a match */
#define GAME_COUNTDOWN 4 /* game is doing the countdown */
#define GAME_GAME 5 /* game is running */
#define GAME_HURRYUP 6 /* game is running and is in hurry up mode */
#define DIR_NONE -1
#define DIR_DOWN 0
#define DIR_RIGHT 1
#define DIR_LEFT 2
#define DIR_UP 3
#define SPEED_NORMAL 4
#define SPEED_SLOW 3
#define SPEED_FAST 6
#define BLOCK_FAKEBLOCK -1 /* used for remote/kick bombs which are placed into the map */
#define BLOCK_NOBLOCK 0 /* empty field */
#define BLOCK_HARDBLOCK 1 /* non-destroyable block */
#define BLOCK_DESTROYABLE 2 /* destroyable block */
#define BLOCK_BOMB 3 /* normal bomb */
#define BLOCK_BORDERWALL1 4 /* borderblocks are equal to hardblock */
#define BLOCK_BORDERWALL2 5
#define BLOCK_BORDERWALL3 6
#define BLOCK_BORDERWALL4 7
#define BLOCK_BORDERWALL5 8
#define BLOCK_BORDERWALL6 9
#define BLOCK_ADDBOMB 19 /* block which contains a bomb */
#define BO_EXPANDFLAME 1 /* types for bonusgrid */
#define BO_ADDBOMB 2
#define BO_FLAMEMAX 3
#define BO_BOMBMAX 4
#define BO_RANDOMWALL 5
#define BO_BOMBS2BLOCKS 6
#define BO_DROPALL 7
#define BO_EXPLALL 8
#define BO_FASTER 9
#define BO_SLOWER 10
#define BO_SHORTERFUSE 11
#define BO_LONGERFUSE 12
#define BO_SHORTERFLAME 13
#define BO_SWAPCONTROLSRL 14
#define BO_FEWERBOMBS 15
#define BO_NODROP 16
#define BO_SHIELD 17
#define BO_STANDSTILL 18
#define BO_TELEPORT 19
#define BO_REMOTEBOMB 20
#define BO_BACK2BASIC 21
#define BO_KICKBOMB 22
#define BO_SABER 23
#define BO_SWAPCONTROLSUD 24
#define BO_MAGNET 25
#define BO_PHOENIX 26
#define BO_DOHURRYUP 27
#define BO_INVISIBLE 28
#define BO_DUELL 29
#define BO_AFTERBURNER 30
#define BOMB_NORMAL 0 /* normal bomb */
#define BOMB_GEN 1 /* predefinend bomb */
#define BOMB_REMOTE 2 /* remote bomb */
#define BOMB_KICK 3 /* kick bomb */
struct serverdata {
char servername[34]; /* name of the server */
char sysopname[18]; /* name of the sysop */
WORD maxslots; /* how many players allows this server */
WORD maxobservers; /* how many observers allows this server */
};
struct tempbomb {
struct MinNode ln;
WORD x; /* x blockpos */
WORD y; /* y blockpos */
WORD x1; /* x pos (pixel) */
WORD y1; /* y pos (pixel) */
WORD fuse; /* >0 bomb is still ticking, =0 bomb is going to explode */
WORD range; /* flamlength */
WORD dir; /* in case of kick/remote bomb holds the direction */
WORD originx; /* holds the x/y pos (block) where the bomb was placed */
WORD originy; /* (useful to find kick/remotebombs) */
WORD type; /* is set to one of BOMB_#? */
};
struct player {
WORD num;
LONG status;
WORD dead;
WORD x; /* xpos (pixel) + border (24 pixel) */
WORD y; /* ypos (pixel) + border (16 pixel) */
WORD px; /* xpos (block number) */
WORD py; /* ypos (block number) */
WORD bombc; /* how many bombs this player has currently ticking */
WORD maxkickbombs; /* how many kickbombs this player has */
struct MinList *bomblist; /* doubly linked list of bombs belonging to this player */
struct tempbomb *remotebomb; /* pointer to a bomb of bomblist which is his remotebomb else 0 */
struct tempbomb *kickbomb; /* pointer to a bomb of bomblist which is his kickbomb else 0 */
WORD maxrange; /* flamelen of player ranging from 2 to 15 */
WORD maxbombs; /* how many bombs this player can drop */
WORD fuselen; /* fuselength of bombs the player can drop */
WORD speed; /* player speed; SPEED_NORMAL=4, SPEED_SLOW=3, SPEED_FAST=6 */
WORD speedc; /* >0 = player has other speed (SPEED_SLOW, SPEED_FAST) */
WORD swaprlc; /* >0 = swaped horizontal controls */
WORD swapudc; /* >0 = swaped vertical controls */
WORD nodropc; /* >0 = player can't drop bombs */
WORD shieldc; /* >0 = player has shield */
WORD standstillc; /* >0 = player can't move */
WORD invisiblec; /* >0 = player is invisible */
WORD afterburnerc; /* >0 = player has afterburner */
WORD b2bc;
WORD flamethrowerc; /* >0 = player has lightsabre */
WORD flamethrowerdir; /* direction of lightsabre */
WORD flamethrowerr; /* range of light sabre */
WORD magnetc; /* >0 = this player has magnet enabled */
WORD magnetdir; /* direction of magnet */
char name[34]; /* players name */
char system[64]; /* players systemstring */
};
struct dynamitesemaphore {
struct SignalSemaphore sema; /* embedded signalsemaphore */
LONG opencnt; /* you must increase this by 1 if you are going to use the */
/* semaphore the first time. decrease it by 1 if you are done */
LONG quit; /* dynamite will set this to 1 if it wants to quit. Check this */
/* from time to time and end your program if quit gets set to 1 */
LONG gamerunning; /* is set to one of GAME_#? */
LONG frames; /* once a game is running this long will be increased by 1 */
/* every frame. */
LONG walk; /* set to one of DIR_ to make the player move or stop */
LONG drop; /* set to 1 to drop a bomb */
LONG dropkick; /* set to 1 to drop a kickbomb */
LONG thisplayer; /* number of this player in playerarray (>7 = observer) */
struct player *players[16]; /* array ptr of players (15 entries max; >7 = observer) */
LONG mapwidth; /* holds the width of the map in blocks */
LONG mapheight; /* holds the height of the map in blocks */
APTR grid; /* array ptr to the actual map (29 entries max). each entry contains 1 line of the map without powerups */
APTR bonusgrid; /* array ptr to the bonus map (29 entries max). each entry contains 1 line of the bonusmap */
char addbubble[10]; /* any string copied to this array will be shown as bubble */
/* dynamite will clear the string after successful */
/* creation of the bubble */
struct serverdata *serverdata; /* see serverdata for details */
};
#endif